package com.niit.session22;

import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;

public class StreamDemo {
	public static void main(String[] args) {
//		创建一个集合，存储1到100的值，使用Stream API将集合中的偶数筛选出来并且对每个偶数乘以2，最后收集成一个新的集合。
//		创建一个集合,存储1到100的值
		List<Integer> list = new ArrayList<Integer>();
		for (int i = 1; i <= 100; i++) {
			list.add(i);
		}
		/**************************传统写法***********************************/
//		将集合中的偶数筛选出来并且对每个偶数乘以2，最后收集成一个新的集合。
		List<Integer> result = new ArrayList<Integer>();
		for (Integer num : list) {
			if(num%2 ==0) {
				num *=2;
				result.add(num);
			}
			
		}
		for (Integer i : result) {
			System.out.println(i);
		}
		System.out.println();
		/**************************Stream API***********************************/
//		要对集合进行流水线操作,首先要将集合用.stream()方法转换为stream流
//		要对流进行筛选,用的时filter方法,filter方法接收一个Predicate对象,可以用lambda表达式替代
//		要对流的元素乘以2,就要用映射方法map,map方法接收一个function对象,也可以使用lambda表达式替代
//		要把流收集成新的集合,可以用collect方法,传进去一个Collectors.toList()
		List<Integer> collect = list.stream().filter(i -> i%2 ==0).map(i -> i*2).collect(Collectors.toList());
//		java里遍历集合最简单的方式,使用forEach方法和方法引用
		collect.forEach(System.out::println);
	}

}
